package com.wangxi.controller;


import com.wangxi.core.constants.ErrorMessages;
import com.wangxi.core.model.ApiResponse;
import com.wangxi.entity.PlantsUser;
import com.wangxi.service.PlantsUserService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Map;

@RestController    //把下面的类变成一个控制器，这样就可以接收前台的的请求了，数据请求；而@Controller注解请求的是页面和数据
//@RestController注解，默认会将返回的对象数据转换为JSON数据
@RequestMapping("api/plants/plantsUser")   //负责URL的路由映射，可放在类或者方法上
public class PlantsUserController {

    @Resource
    private PlantsUserService plantsUserService;

    //处理get请求,获取资源   {}代表是动态的
    @GetMapping("/{userId}")
    //相当于@RequestMapping(value = "/{userId}",method = RequestMethod.GET),只接受前台传来的get请求
    public ApiResponse<PlantsUser> selectOne(@PathVariable("userId") Integer userId) {  //@PathVariable注解为了拿到动态的userId
        PlantsUser plantsUser = this.plantsUserService.queryById(userId);  //通过用户Id来获取用户信息，并放在了movieUser对象中
        //如果movieUser对象为空，也就是传进来的userId，在数据库中不存在，如果用户不存在，则把Boolean的值变成FALSE，并且打印出“查询结果为空”的错误信息
        if (plantsUser == null) {
            return new ApiResponse<>(Boolean.FALSE, ErrorMessages.QUERY_NULL, null);
        }
        //如果用户存在，则把Boolean的值变成TRUE，并且打印出“请求成功”的信息
        return new ApiResponse<>(Boolean.TRUE, ErrorMessages.REQUEST_SUCCESS, plantsUser);
    }

    /**
     * 用户登录请求
     *
     * @param map 账号和密码
     * @return 单条用户数据
     */
/*    @ApiOperation(value = "用户登录", notes = "用户输入账号和密码，进行验证登录")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "body", name = "map", value = "用户账号和密码", required = true, dataType = "Map")
    })*/
//    api/plants/plantsUser/login/
    @PostMapping("/login")  //处理前台传来的post请求,新增资源
    public ApiResponse<PlantsUser> login(@RequestBody Map<String, String> map) {
        String account = map.get("account");
        String password = map.get("password");
        System.out.println("用户登录请求");
        PlantsUser plantsUser = plantsUserService.login(account, password);  //匹配成功返回movieUser对象,不成功返回null
        //如果匹配失败,则返回给前台ApiResponse对象,其中success的值被置为FALSE,message的值被置为账号或密码错误,data为空
        if (plantsUser == null) {
            return new ApiResponse<>(Boolean.FALSE, ErrorMessages.LOGIN_ACCOUNT_PASSWORD_WRONG, null);
        }
        //如果匹配成功,则返回给前台ApiResponse对象,其中success的值被置为TRUE,message的值被置为登录成功,data为movieUser对象
        return new ApiResponse<>(Boolean.TRUE, ErrorMessages.LOGIN_SUCCESS, plantsUser);

    }





}
